package Arrays_package;

import java.util.Arrays;

public class Arrays_demo1 {
    public static void main(String[] args) {
        /*
        public static String toString (数组)                                  把数组拼接成一个字符串
        public static int binarySearch (数组， 查找元素)                        二分查找法查找元素
        public static int[] copyOf (原数组， 新数组长度)                         拷贝数组
        public static int[] copyOfRange (原数组， 起始索引， 结束索引)            拷贝数组（指定范围）
        public static void fill (数组， 元素)                                  填充数组
        public static void sort (数组)                                        按照默认方式进行数组排序
        public static void sort (数组， 排序规则)                              按照指定的规则排序
         */

        //toString：将数组变成字符串
        System.out.println("-------------toString--------------");
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        System.out.println(Arrays.toString(arr));


        //binarySearch：二分查找法查找元素
        //细节1：二分查找的前提，数组中的元素必须是有序的
        //细节2：如果要查找的元素是存在的，那么返回的是真实索引
        //但是，如果要查找的元素是不存在的，返回的是 -插入点 - 1
        System.out.println("-------------binarySearch--------------");
        System.out.println(Arrays.binarySearch(arr, 10));//-10
        System.out.println(Arrays.binarySearch(arr, 5));
        System.out.println(Arrays.binarySearch(arr, 3));


        //copyOf：拷贝数组
        //参数1：老数组
        //参数2：新数组的长度
        //方法的底层会根据第二个参数来创建新的数组
        //如果新数组的长度小于老数组的长度，会部分拷贝
        //如果新数组的长度等于老数组的长度，会完全拷贝
        //如果新数组的长度大于老数组的长度，会补上默认初始值
        System.out.println("-------------copyOf--------------");
        int[] newArr1 = Arrays.copyOf(arr, 20);
        System.out.println(Arrays.toString(newArr1));


        //copyOfRange：拷贝数组（指定范围）
        //细节：包头不包尾，包左不包右
        System.out.println("-------------copyOfRange--------------");
        int[] newArr2 = Arrays.copyOfRange(arr, 0, 5);
        System.out.println(Arrays.toString(newArr2));


        //fill：填充数组
        System.out.println("-------------fill--------------");
        Arrays.fill(arr, 100);
        System.out.println(Arrays.toString(arr));


        //sort：排序。默认情况下，给基本数据类型进行升序排序，底层使用的是快速排序。
        System.out.println("-------------sort--------------");
        int[] arr2 = {10, 2, 3, 5, 6, 1, 7, 8, 4, 9};
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));

    }
}
